The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
Changes 015
META.yml 11
bin/cpanm 746
lib/App/cpanminus.pm 15
4 files changed (This is a version diff) 967
@@ -1,5 +1,20 @@
 See http://github.com/miyagawa/cpanminus/ for the latest development.
 
+1.3000   Wed Mar  2 14:39:44 PST 2011
+   - No changes since the last beta
+
+1.29_02  Tue Mar  1 16:06:20 PST 2011
+   - Improved the dependencies detection when -L is in use so the core modules that have been upgraded
+     inside can be correctly be detected, using Module::CoreList.
+   - Added a crazy hack to support Build.PL configure dependencies > 0.36 when -L is in effect
+
+1.29_01  Mon Feb 28 18:57:27 PST 2011
+   - Disable --uninstall-shadows by default for perl >= 5.12
+
+1.2001  Wed Feb 16 10:54:21 PST 2011
+   - This be official 1.2
+   - Skips tests during the bootstrap, making a much better first time experience
+
 1.19_02 Tue Jan 18 14:11:23 PST 2011
    - Module::Metadata now requires version.pm 0.87. This makes cpanm unable to boostrap when version.pm is
      older than that. For now, include the pure perl version/vpp.pm and version.pm in the fatlib and then
@@ -1,6 +1,6 @@
 --- #YAML:1.0
 name:               App-cpanminus
-version:            1.19_02
+version:            1.3000
 abstract:           Get, unpack, build and install modules from CPAN.
 author:  []
 license:            perl
@@ -18,7 +18,7 @@ my %fatpacked;
 
 $fatpacked{"App/cpanminus.pm"} = <<'APP_CPANMINUS';
   package App::cpanminus;
-  our $VERSION = "1.19_02";
+  our $VERSION = "1.3000";
   
   =head1 NAME
   
@@ -145,6 +145,8 @@ $fatpacked{"App/cpanminus.pm"} = <<'APP_CPANMINUS';
   
   =over 4
   
+  =item L<CPAN::DistnameInfo> Copyright 2003 Graham Barr
+  
   =item L<Parse::CPAN::Meta> Copyright 2006-2009 Adam Kennedy
   
   =item L<local::lib> Copyright 2007-2009 Matt S Trout
@@ -153,6 +155,8 @@ $fatpacked{"App/cpanminus.pm"} = <<'APP_CPANMINUS';
   
   =item L<Module::Metadata> Copyright 2001-2006 Ken Williams. 2010 Matt S Trout
   
+  =item L<version> Copyright 2004-2010 John Peacock
+  
   =back
   
   =head1 LICENSE
@@ -220,8 +224,7 @@ $fatpacked{"App/cpanminus/script.pm"} = <<'APP_CPANMINUS_SCRIPT';
   use constant WIN32 => $^O eq 'MSWin32';
   use constant SUNOS => $^O eq 'solaris';
   
-  our $VERSION = "1.19_02";
-  $VERSION = eval $VERSION;
+  our $VERSION = "1.3000";
   
   my $quote = WIN32 ? q/"/ : q/'/;
   
@@ -253,7 +256,7 @@ $fatpacked{"App/cpanminus/script.pm"} = <<'APP_CPANMINUS_SCRIPT';
           try_lwp => 1,
           try_wget => 1,
           try_curl => 1,
-          uninstall_shadows => 1,
+          uninstall_shadows => ($] < 5.012),
           skip_installed => 1,
           auto_cleanup => 7, # days
           @_,
@@ -315,7 +318,7 @@ $fatpacked{"App/cpanminus/script.pm"} = <<'APP_CPANMINUS_SCRIPT';
   
       $self->bootstrap_local_lib;
       if (@{$self->{bootstrap_deps} || []}) {
-          local $self->{force} = 1; # to force install EUMM
+          local $self->{notest} = 1; # test failure in bootstrap should be tolerated
           $self->install_deps(Cwd::cwd, 0, @{$self->{bootstrap_deps}});
       }
   }
@@ -1155,6 +1158,14 @@ $fatpacked{"App/cpanminus/script.pm"} = <<'APP_CPANMINUS_SCRIPT';
           or return 0, undef;
   
       my $version = $meta->version;
+  
+      # When -L is in use, the version loaded from 'perl' library path
+      # might be newer than the version that is shipped with the current perl
+      if ($self->{self_contained}) {
+          require Module::CoreList;
+          $version = $Module::CoreList::version{$]}{$mod};
+      }
+  
       $self->{local_versions}{$mod} = $version;
   
       if ($self->is_deprecated($meta)){
@@ -1244,6 +1255,25 @@ $fatpacked{"App/cpanminus/script.pm"} = <<'APP_CPANMINUS_SCRIPT';
       return 1;
   }
   
+  sub _patch_module_build_config_deps {
+      my($self, $config_deps) = @_;
+  
+      # Crazy hack to auto-add Module::Build dependencies into
+      # configure_requires if Module::Build is there, since there's a
+      # possibility where Module::Build is in 'perl' library path while
+      # the dependencies are in 'site' and can't be loaded when -L
+      # (--local-lib-contained) is in effect.
+  
+      my %config_deps = (@{$config_deps});
+      if ($config_deps{"Module::Build"}) {
+          push @{$config_deps}, (
+              'Perl::OSType' => 1,
+              'Module::Metadata' => 1.000002,
+              'version' => 0.87,
+          );
+      }
+  }
+  
   sub build_stuff {
       my($self, $stuff, $dist, $depth) = @_;
   
@@ -1257,6 +1287,9 @@ $fatpacked{"App/cpanminus/script.pm"} = <<'APP_CPANMINUS_SCRIPT';
   
       my $target = $dist->{meta}{name} ? "$dist->{meta}{name}-$dist->{meta}{version}" : $dist->{dir};
   
+      $self->_patch_module_build_config_deps(\@config_deps)
+          if $self->{self_contained};
+  
       $self->install_deps_bailout($target, $dist->{dir}, $depth, @config_deps)
           or return;
   
@@ -6489,8 +6522,14 @@ specify custom installation path, you SHOULD disable this option so
 you won't accidentally uninstall dual-life modules from the core
 include path.
 
-Defaults to true, and you can disable that with
-C<--no-uninst-shadows>.
+Defaults to true if your perl version is smaller than 5.12, and you
+can disable that with C<--no-uninst-shadows>.
+
+B<NOTE>: Since version 1.3000 this flag is turned off by default for
+perl newer than 5.12, since with 5.12 @INC contains site_perl directory
+I<before> the perl core library path, and uninstalling shadows is not
+necessary anymore and does more harm by deleting files from the core
+library path.
 
 =item --auto-cleanup
 
@@ -1,5 +1,5 @@
 package App::cpanminus;
-our $VERSION = "1.19_02";
+our $VERSION = "1.3000";
 
 =head1 NAME
 
@@ -126,6 +126,8 @@ The standalone executable contains the following modules embedded.
 
 =over 4
 
+=item L<CPAN::DistnameInfo> Copyright 2003 Graham Barr
+
 =item L<Parse::CPAN::Meta> Copyright 2006-2009 Adam Kennedy
 
 =item L<local::lib> Copyright 2007-2009 Matt S Trout
@@ -134,6 +136,8 @@ The standalone executable contains the following modules embedded.
 
 =item L<Module::Metadata> Copyright 2001-2006 Ken Williams. 2010 Matt S Trout
 
+=item L<version> Copyright 2004-2010 John Peacock
+
 =back
 
 =head1 LICENSE